<?php
/**
 * @Author: jin
 * @Date:   2017-08-02 20:12:49
 * @Last Modified by:   Marte
 * @Last Modified time: 2017-08-06 10:11:41
 */
/**
 验证码
 *验证码的类型：0 ：纯数字
 *              1 ：数字和小写字母
 *              2 ：数字和大小写字母
 */
session_start();
function getCode($m=4,$type=0)
{
    $str="0123456789abcdefjhigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $t=array(9,35,strlen($str)-1);//类型的位置
    $c="";
    for ($i=0;$i<$m;$i++) {
        $c.=$str[rand(0,$t[$type])];
    }
     $_SESSION['code']=$c;
    return $c;
}

// 开始绘制验证码

    $num=4;//验证码4位
    $str=getCode($num,1);//调用随机产生验证码的函数
    $height=40;
    $width=$num*20;//每个字18,
   //创建一个画布、分配颜色
   $im=imagecreatetruecolor($width,$height);//创建画布
   $c[]=imagecolorallocate($im,111,0,55);//固定颜色
   $c[]=imagecolorallocate($im,34,32,12);
   $c[]=imagecolorallocate($im,1,34,12);
   $c[]=imagecolorallocate($im,0,0,55);
   $bg=imagecolorallocate($im,220,220,220);//rgb配色，制作背景

   // 填充颜色,开始绘画
   imagefill($im,0,0,$bg);
   imagerectangle($im, 0, 0, $width-1, $height-1,$c[rand(0,3)]);
   // 添加干扰点
   for($i=0;$i<200;$i++)
   {
    $color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));//随机颜色
    imagesetpixel($im,rand(0,$width),rand(0,$height),$color);
   }
   // 添加干扰线
   for($i=0;$i<10;$i++)
   {
    $color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));//随机颜色
    imageline($im,rand(0,$width), rand(0,$width), rand(0,$width), rand(0,$width), $color);
   }
   // 逐字输出
   for($i=0;$i<$num;$i++)
   {
        imagettftext($im,18,rand(-20,20),8+(18*$i),24,$c[rand(0,3)],"110.ttf",$str[$i]);
        // ("图像源"，"字体大小"，"倾斜大小"，"起始的x坐标"，"起始的y坐标"，"颜色","字体文件","内容")；
   }


   // 输出图像
   header("Content-Type:image/png");//设置响应头信息
   imagepng($im);
   // 销毁图像缓冲
   imagedestroy($im);




?>